#pragma once
#ifndef _KLAS_LIBRARY_HPP_
#define _KLAS_LIBRARY_HPP_

#include "Platform.hpp"

namespace klas
{
  namespace library
  {
    enum { BASE = uint8(0), GL = uint8(1), DX = uint8(2), SF = uint8(3) };

    //! Pure virtual class.  Signifies that no rendering library is being used.
    class KLAS_API Base
    {
      virtual uint8 getLibrary() const = 0;
    };

    //! Signifies that OpenGL is being used to render.
    class KLAS_API Gl: public virtual Base
    {
      inline virtual uint8 getLibrary() const
      { return GL; }
    };

    //! Signifies that DirectX is being used to render.
    class KLAS_API Dx: public virtual Base
    {
      inline virtual uint8 getLibrary() const
      { return DX; }
    };

    //! Signifies that a software solution is being used to render.
    class KLAS_API Sf: public virtual Base
    {
      inline virtual uint8 getLibrary() const
      { return SF; }
    };
  }
}

#endif